define(function(require, exports, module) {
  var $ = require("$");
  var dtUtil = require('datatableutil');
  require("bootstrap_commonrequire");
  require('select2.css');
  require('select2');
  require('highcharts');
  require('highcharts.exporting');
  var store = require('store');
  var loader = require("./loader/loader");
  

  exports.init = function(param) {

    $(document).ready(
        function() {
          // 作为查询时间用
          var startTime = "";
          var endTime = "";
          // 蒙版
          loader.loading("数据加载中，请稍后……");
          // 加载自定义模板-条件区域
          var isSystemAdmin = (store.get("userInfo").userType == -1);
          var tplattrs = {};
          tplattrs.isSystemAdmin = isSystemAdmin;

          var template = require("./differentsidescall.tpl");
          var Widget = require("widget");
          var Component = Widget.extend({
            template : template
          });

          // 将查询出来的内容赋值给图表区
          var dataChart = {};

          new Component({
            attrs : tplattrs,
            renderTo : queryAreaId
          });

          // 获取查询条件
          function getCondition() {
            var isvid = $('#isvName').val();// isv名称
            var applyid = $('#applyName').val();// 应用名称
            var carrierid = $('#carrierid').val();// 企业名称
            
            var queryStr = "";
            if (carrierid != '' && carrierid != null) {
              queryStr += ("tmi.company_id=" + carrierid + ";");
            }

            if (isvid != '' && isvid != null) {
              queryStr += ("tmi.isv_id=" + isvid + ";");
            }

            if (applyid != '' && applyid != null) {
              queryStr += ("tmi.app_id=" + applyid + ";");
            }
            
            var daterange = daterangeCom.getPickerRange();
            if (daterange) {
              var daterange = daterange.split("/");
              // 只获取起始或截止的那一天的时间，这样可以确保是一天
              startTime = daterange[0];
              endTime = daterange[1];
              queryStr += ("(tmi.create_time BETWEEN '" + startTime + " 00:00:00' AND '" + endTime + " 23:59:59')" + ";");
            }

            return queryStr;
          }


          // 绑定isv名称下拉列表
          $.ajax({
            type : "POST",
            dataType : "json",
            url : "/user/queryIsv.do",
            async : false,
            success : function(data) {
              $("#isvName").select2({
                placeholder : "ISV名称",
                allowClear : true,
                data : data
              });
            },
            error : function(data) {
              bootbox.alertTimeout('初始化ISV名称数据失败！');
            }
          });

          // 绑定应用下拉列表
          $.ajax({
            type : "POST",
            dataType : "json",
            url : "/condition/applyName.do",
            async : false,
            success : function(data) {
              $("#applyName").select2({
                placeholder : "应用名称",
                allowClear : true,
                data : data
              });
            },
            error : function(data) {
              bootbox.alertTimeout('初始化应用名称数据失败！');
            }
          });

          $("#carrierid").select2({
            placeholder : "企业名称",
            allowClear : true,
            formatNoMatches : "没有匹配的企业",
            ajax : {
              url : GLOBAL.URL.ADMIN_GETCARRIEROPTIONS,
              dataType : 'json',
              delay : 250,
              data : function(term, pageNo) {
                return {
                  q : " c.name like '%" + term + "%' ", // search term
                  size : 25,
                  start : (pageNo - 1) * 25
                };
              },
              results : function(data, pageNo) {
                var dataObj = eval(data);
                return {
                  results : dataObj
                };
              },
              cache : true
            }
          });

          // 初始化日期范围选择控件
          var DateRange = require('daterangeinput');
          var daterangeAttrs = {
            daterangeId : "querydatewrapper_rang",
            label : "日期"
          };
          var daterangeCom = new DateRange({
            attrs : daterangeAttrs,
            renderTo : 'querydatewrapper'
          });

          daterangeCom.setRangeToToday();
          

          // 加载表单模板和数据
          var Table = require("table");
          new Table({
            attrs : {
              id : "datatableid",
              isHovered : false,
              isStriped : true,
              isBordered : false
            },
            renderTo : param.divWrapperId
          });

          var datatables = $('#datatableid').dataTable(
              {
                "sDom" : "<'hidden'<'span6'l><'hidden'f>r>t<'row-fluid'<'span6'i><'span6'p>>",
                "bJQueryUI" : false,
                "oLanguage" : {
                  "sUrl" : "/business/js/common/table/src/lang/dataTable.cn.txt"
                },
                "sPaginationType" : "bootstrap", // 分页自带两种样式，full_numbers和two_button(默认)
                'bPaginate' : true, // 是否分页
                "bProcessing" : true, // 当datatable获取数据时候是否显示正在处理提示信息。
                "bServerSide" : true, // 指定服务器端分页
                "bDeferRender" : true,
                "bFilter" : true,
                "bSort" : true,
                "bInfo" : true,
                "sAjaxSource" : "/unusual/queryTotalSidesAnswer.do", // 数据源param.ajaxUrl//
                "iDisplayLength" : DATATABLES_CONFIG.iDisplayLength.DEFAULT, // 默认分页的每页记录数
                "fnServerData" : function(sSource, aoData, fnCallback, oSettings) {
                  var queryparam = dtUtil.convert_aoData(aoData);

                  // 拼接where查询条件
                  var cond = getCondition();
                  if (cond != '' && cond != null) {
                    queryparam.q += cond;
                  }

                  // 添加自己的额外参数
                  oSettings.jqXHR = $
                      .ajax({
                        "dataType" : 'json',
                        "contentType" : "application/json;charset=UTF-8",
                        "type" : "GET",
                        "url" : sSource,
                        "data" : queryparam, // 将请求数据转换为后台要求的JSON格式
                        "success" : function(json) {
                          // 隐藏蒙版
                          loader.noloading();
                          dtUtil.successCallback(json, aoData, fnCallback);
                          dataChart = json;
                          // 获取拼接成json串
                          var jsondata = dataChart.data;
                          // 获取data中的items属性
                          var itemSides = jsondata.itemsides;
                          var itemsActual = jsondata.itemanswer;

                          var strSides = [];// 存放参与方的数量
                          var strCount = [];// 参与方实际接听的数量
                          
                          // 格式化数据，参与方的数量
                          var bean = itemSides[0];
                          strSides.push(["双方",bean.sidesTwo]);
                          bean = itemSides[1];
                          strSides.push(["三方",bean.sidesThree]);
                          bean = itemSides[2];
                          strSides.push(["多方",bean.sidesMore]);
                          // 参与方实际接听的数量
                          bean = itemsActual[0];
                          strCount.push(["只有主叫接听",bean.countOne]);
                          bean = itemsActual[1];
                          strCount.push(["双方接听",bean.countTwo]);
                          bean = itemsActual[2];
                          strCount.push(["多方接听",bean.countMore]);
                          

                          new Highcharts.Chart({
                            chart: {
                              renderTo: 'container1',
                              plotBackgroundColor: null,
                              plotBorderWidth: null,
                              plotShadow: false
                            },
                            title: {
                                text: '多方通话参与方数量'
                            },
                            tooltip: {
                              formatter: function() {
                                return '<b>'+ this.point.name +'：</b><br>份额：<b>'+ Highcharts.numberFormat(this.percentage, 1) +'% </b><br>数量：<b>'+
                                             Highcharts.numberFormat(this.y, 0, ',') +' </b>';
                              }
                            },
                            plotOptions: {
                              pie: {
                                allowPointSelect: true,
                                cursor: 'pointer',
                                dataLabels: {
                                    enabled: true,
                                    format: '<b>{point.name}：</b><br>份额：<b>{point.percentage:.1f} %</b><br>数量：<b>{point.y}</b>',
                                    style: {
                                        color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'
                                    },
                                    connectorColor: 'silver'
                                },
                                showInLegend: true
                            }
                            },
                            exporting: { 
                              enabled: false  //设置导出按钮不可用 
                            },
                            series: [{
                                type: 'pie',
                                name: '份额',
                                data: strSides
                            }]
                          });
                          
                          new Highcharts.Chart({
                            chart: {
                              renderTo: 'container2',
                              plotBackgroundColor: null,
                              plotBorderWidth: null,
                              plotShadow: false
                            },
                            title: {
                                text: '多方通话参与方实际接听数量'
                            },
                            tooltip: {
                              formatter: function() {
                                return '<b>'+ this.point.name +'：</b><br>份额：<b>'+ Highcharts.numberFormat(this.percentage, 1) +'% </b><br>数量：<b>'+
                                             Highcharts.numberFormat(this.y, 0, ',') +' </b>';
                              }
                            },
                            plotOptions: {
                                pie: {
                                    allowPointSelect: true,
                                    cursor: 'pointer',
                                    dataLabels: {
                                        enabled: true,
                                        format: '<b>{point.name}：</b><br>份额：<b>{point.percentage:.1f} %</b><br>数量：<b>{point.y}</b>',
                                        style: {
                                            color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'
                                        },
                                        connectorColor: 'silver'
                                    },
                                    showInLegend: true
                                }
                            },
                            exporting: { 
                              enabled: false  //设置导出按钮不可用 
                            },
                            series: [{
                                type: 'pie',
                                name: '份额',
                                data: strCount
                            }]
                          });

                        }
                      });
                },
                "aoColumns" : [{}],// 并没有给table设置列
                "fnDrawCallback" : function(oSettings) {
                  // 表格绘制完成后，去除width属性，使表格可缩放
                  $('#' + oSettings.sTableId).css("width", "");
                }
              });

          // 统计图表按钮
          $('#btnchart').click(function() {
            //蒙版
            loader.loading("数据加载中，请稍后……");
            datatables.fnFilter();
            return false;
          });

          //重置查询条件
          $('#btnreset').click(function() {
            //蒙版
            loader.loading("数据加载中，请稍后……");
            $("#isvName").select2("val", "");
            $("#applyName").select2("val", "");
            $("#carrierid").select2("val", "");
            daterangeCom.setRangeToToday();
            datatables.fnFilter();
            return false;
          });

        });

  };
});
